Skip to content

x-keyboard-s 软键盘 ​

软键盘高度监听、收起键盘、读取当前输入框光标/选区。函数与类型均加 x 前缀,避免与官方同名冲突。一次性 API 使用 DCloud success / fail / complete。

兼容性 ​

HarmonyiOSAndroidWEB微信小程序
支持支持支持支持支持

鸿蒙端 xGetSelectedTextRange 无法读取系统输入框选区,会走 fail 1005。

调用 ​

ts
import {
  xOnKeyboardHeightChange,
  xOffKeyboardHeightChange,
  xHideKeyboard,
  xGetSelectedTextRange,
  XHideKeyboardOptions,
  XGetSelectedTextRangeOptions
} from "@/uni_modules/x-keyboard-s"

const listenId = xOnKeyboardHeightChange((res) => {
  console.log(res.height)
})

xHideKeyboard({
  success: (res) => {
    console.log(res.errMsg)
  }
} as XHideKeyboardOptions)

xGetSelectedTextRange({
  success: (res) => {
    console.log(res.start, res.end)
  },
  fail: (err) => {
    console.log(err.errCode, err.errMsg)
  }
} as XGetSelectedTextRangeOptions)

xOffKeyboardHeightChange(listenId)

方法 ​

名称说明
xOnKeyboardHeightChange监听键盘高度变化,返回监听 id
xOffKeyboardHeightChange移除监听;不传 id 则移除本插件全部监听
xHideKeyboard收起软键盘
xGetSelectedTextRange读取当前获焦输入框的光标/选区,仅 focus 时有效

结果 ​

XKeyboardHeightChangeResult.height 为逻辑像素,收起时为 0。

XGetSelectedTextRangeResult:start / end 为字符下标。

错误码:1001 系统错误,1002 参数错误,1005 当前没有获焦的输入框,1008 当前平台不支持。

平台差异 ​

Android

  • 高度:根视图 OnGlobalLayoutListener + 可视区域差值,再除以 density。
  • 收起:InputMethodManager.hideSoftInputFromWindow。
  • 选区:当前 focus 的 TextView / EditText。

iOS

  • 高度:keyboardWillChangeFrame。
  • 收起:endEditing。
  • 选区:当前 first responder 的 UITextInput。

HarmonyOS

  • 高度:window.on('keyboardHeightChange'),px 转 vp。
  • 收起:inputMethod.getController().hideSoftKeyboard / stopInputSession。
  • 选区:无全局可读选区,fail 1005。

Web

  • 高度:visualViewport 与 window.innerHeight 差值。
  • 收起:document.activeElement.blur()。
  • 选区:当前 input / textarea 的 selectionStart / selectionEnd。

微信小程序

  • 直接转发 wx.onKeyboardHeightChange / wx.offKeyboardHeightChange / wx.hideKeyboard / wx.getSelectedTextRange。

版本 ​

版权归 https://xui.tmui.design 你不得修改及二次开发,仅供 TMUI4 会员商用使用。不得转给非 VIP 会员使用,一经查实数倍赔偿,并追究法律责任。

更新日志 ​

1.0.0(2026-08-16) ​

  • 新增 x-keyboard-s:xOnKeyboardHeightChange、xOffKeyboardHeightChange、xHideKeyboard、xGetSelectedTextRange。
最近更新